package com.imut.lagain.entity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;

import java.time.LocalDateTime;

/**
 * 健康提醒实体类
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("health_reminder")
public class HealthReminder {
    private static final Logger log = LoggerFactory.getLogger(HealthReminder.class);

    
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    
    /**
     * 用户ID
     */
    @NotNull(message = "用户ID不能为空")
    @TableField("user_id")
    private Long userId;
    
    /**
     * 提醒类型（PERIOD_START-生理期开始, PERIOD_END-生理期结束, OVULATION-排卵期, CARE-护理提醒）
     */
    @NotBlank(message = "提醒类型不能为空")
    @TableField("reminder_type")
    private String reminderType;
    
    /**
     * 提醒时间
     */
    @NotNull(message = "提醒时间不能为空")
    @TableField("remind_time")
    private LocalDateTime remindTime;
    
    /**
     * 提醒消息
     */
    @NotBlank(message = "提醒消息不能为空")
    @Size(max = 500, message = "提醒消息长度不能超过500个字符")
    @TableField("message")
    private String message;
    
    /**
     * 是否已完成(1-已完成, 0-未完成)
     */
    @TableField("is_completed")
    private Boolean isCompleted = false;
    
    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    public Long getId() {
        return id;
    }
    
    public void setId(Long id) {
        this.id = id;
    }
    
    public Long getUserId() {
        return userId;
    }
    
    public void setUserId(Long userId) {
        this.userId = userId;
    }
    
    public String getReminderType() {
        return reminderType;
    }
    
    public void setReminderType(String reminderType) {
        this.reminderType = reminderType;
    }
    
    public LocalDateTime getRemindTime() {
        return remindTime;
    }
    
    public void setRemindTime(LocalDateTime remindTime) {
        this.remindTime = remindTime;
    }
    
    public String getMessage() {
        return message;
    }
    
    public void setMessage(String message) {
        this.message = message;
    }
    
    public Boolean getIsCompleted() {
        return isCompleted;
    }
    
    public void setIsCompleted(Boolean isCompleted) {
        this.isCompleted = isCompleted;
    }
    
    public LocalDateTime getCreateTime() {
        return createTime;
    }
    
    public void setCreateTime(LocalDateTime createTime) {
        this.createTime = createTime;
    }
}
